// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.material.service;

import java.util.List;
import java.util.Map;

import com.liuxinlong.common.ImportResp;
import com.liuxinlong.modules.entity.Material;
import com.liuxinlong.modules.material.dto.MaterialInfoDto;

/**
 * 物料管理service接口
 *
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2022年2月17日
 */
public interface MaterialService {
    /**
     * 分页查询物料信息
     *
     * @param queryParam 请求信息
     * @return 物料信息列表
     */
    List<Map<String, Object>> pageMaterialList(Map<String, Object> queryParam);

    /**
     * 查询物料信息总数
     *
     * @param queryParam 请求信息
     * @return 物料信息总数
     */
    int getMaterialCount(Map<String, Object> queryParam);

    /**
     * 新增物料信息
     *
     * @param material 物料信息
     */
    void addMaterial(Material material);

    /**
     * 更新物料信息
     *
     * @param material 物料信息
     */
    void updateMaterial(Material material);

    /**
     * 删除物料信息
     *
     * @param id 物料id
     */
    void deleteMaterial(String id);

    /**
     * 图纸文件同步
     *
     * @return 同步文件数
     */
    int syncDrawFile();

    /**
     * 导入数据预处理
     *
     * @param fileName 文件地址
     * @return 预处理数据
     */
    ImportResp importMaterials(String fileName);

    /**
     * 批量新增物料替换信息
     *
     * @param dataList 物料信息列表
     * @return 失败数据
     */
    ImportResp batchAddMaterial(List<MaterialInfoDto> dataList);

    /**
     * 获取最终父项
     *
     * @param material 当前物料号
     * @param region   所属域
     * @return 最终父项
     */
    List<Map<String, Object>> getFinalParentMaterial(String material, String region);

    /**
     * 查询物料相关信息
     *
     * @param material 当前物料号
     * @param region   所属域
     * @return 物料相关信息
     */
    Map<String, Object> getMaterialExpand(String material, String region);
}
